package com.learn.algorlthm;

import java.util.Arrays;

/**
 * @classname:
 * @Description:把数组排成最小的数
 * @author: yfpu(fengpu.yang @ ucarinc.com)
 * @Date: 2018-08-08 17:47
 * 题目描述：
 * 输入一个正整数数组，把数组里所有数字拼接起来排成一个数，打印能拼接出的所有数字中最小的一个。例如输入数组
 * {3，32，321}，则打印出这三个数字能排成的最小数字为 321323。
 */
public class Learn45 {

    public static String printMinNumber(int[] nums) {
        if (nums == null || nums.length ==0)
            return "";
        String[] strs = new String[nums.length];

        for (int i = 0; i < nums.length; i++) {
            strs[i] = String.valueOf(nums[i]);
        }


        Arrays.sort(strs, ((o1, o2) -> (o1 + o2).compareTo(o2 + o1)));
        StringBuffer str = new StringBuffer();
        for (String s : strs) {
            str.append(s);
        }
        return str.toString();
    }
}
